home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 23 / Amiga Format AFCD23 (Feb 1998, Issue 107).iso / +look_here_1st!+ / reader_requests / alienbreed3d2 / cheesesauce / biguglyalien.s < prev    next >
Text File  |  1997-11-28  |  6KB  |  363 lines

  1. ItsABigNasty:
  2.  
  3.  move.l #20*256,StepUpVal
  4.  move.l #50*256,thingheight
  5.  
  6.  move.w 12(a0),d2
  7.  bge.s .stillalive
  8. .notthisone:
  9.  rts
  10. .stillalive:
  11.  
  12.  tst.b numlives(a0)
  13.  bgt.s .notdying
  14.  
  15.  move.b #0,numlives(a0)
  16.  
  17. .onfloordead:
  18.  move.b #-1,16(a0)
  19.  rts
  20.  
  21. .notdying: 
  22.  
  23.  move.l #3*65536,deadframe
  24.  move.l #3*65536,8(a0)
  25.  move.w #8,screamsound
  26.  move.w #70,nasheight
  27.  
  28.  tst.b 17(a0)
  29.  beq.s .cantseeplayer
  30.   
  31.  tst.w ObjTimer(a0)
  32.  bgt.s .cantseeplayer
  33.  
  34.  jsr GetRand
  35.  and.w #255,d0
  36.  cmp.w #250,d0
  37.  bgt.s .cantseeplayer
  38.   
  39.  bra .Attack_Player
  40.  
  41. .cantseeplayer 
  42.  
  43.  move.l ZoneAdds,a5
  44.  move.l (a5,d2.w*4),d0
  45.  add.l #LEVELDATA,d0
  46.  move.l d0,objroom
  47.  
  48.  move.w TempFrames,d0
  49.  sub.w d0,ObjTimer(a0)
  50.  bgt.s .nonewdir
  51.  
  52.  tst.b 17(a0)
  53.  beq.s .keepwandering
  54.  
  55.  bra .Attack_Player
  56.  
  57. .keepwandering
  58.  
  59.  jsr GetRand
  60.  and.w #8190,d0
  61.  move.w d0,Facing(a0)
  62.  
  63.  jsr GetRand
  64.  and.w #15,d0
  65.  add.w #20,d0
  66.  move.w d0,ObjTimer(a0)
  67.  
  68. .nonewdir
  69.  
  70.  move.w (a0),d1
  71.  move.l ObjectPoints,a1
  72.  lea (a1,d1.w*8),a1
  73.  move.w (a1),oldx 
  74.  move.w 4(a1),oldz
  75.  
  76.  move.w maxspd(a0),d2
  77.  muls TempFrames,d2
  78.  move.w d2,speed
  79.  move.w #20,Range
  80.  
  81.  move.w 4(a0),d0
  82.  ext.l d0
  83.  asl.l #7,d0
  84.  move.l d0,newy
  85.  
  86.  movem.l d0/a0/a1/a3/a4/d7,-(a7)
  87.  clr.b canshove
  88.  move.w Facing(a0),d0
  89.  jsr GoInDirection
  90.  move.w #%1000000000,wallflags
  91.  Jsr MoveObject
  92.  movem.l (a7)+,d0/a0/a1/a3/a4/d7
  93.  
  94.  tst.b hitwall
  95.  beq.s .nochangedir
  96.  move.w #-1,ObjTimer(a0)
  97. .nochangedir:
  98.  
  99.  move.l objroom,a2
  100.  move.w (a2),12(a0)
  101.  
  102.  move.w newx,(a1)
  103.  move.w newz,4(a1)
  104.  
  105.  move.w 10(a2),2(a0)
  106.  move.l 2(a2),d0
  107.  asr.l #7,d0
  108.  sub.w #70,d0
  109.  move.w d0,4(a0)
  110.  
  111.  move.b damagetaken(a0),d2
  112.  beq .noscream
  113.  
  114.  sub.b d2,numlives(a0)
  115.  bgt.s .notdeadyet
  116.  
  117.  movem.l d0-d7/a0-a6,-(a7)
  118.  sub.l ObjectPoints,a1
  119.  add.l #ObjRotated,a1
  120.  move.l (a1),Noisex
  121.  move.w #200,Noisevol
  122.  move.w screamsound,Samplenum
  123.  move.b #1,chanpick
  124.  clr.b notifplaying
  125.  st backbeat
  126.  move.b 1(a0),IDNUM
  127.  jsr MakeSomeNoise
  128.  movem.l (a7)+,d0-d7/a0-a6
  129.  move.l deadframe,8(a0)
  130.  rts
  131.  
  132. .notdeadyet:
  133.  clr.b damagetaken(a0)
  134.  
  135.  movem.l d0-d7/a0-a6,-(a7)
  136.  sub.l ObjectPoints,a1
  137.  add.l #ObjRotated,a1
  138.  move.l (a1),Noisex
  139.  move.w #200,Noisevol
  140.  move.w screamsound,Samplenum
  141.  move.b #1,chanpick
  142.  clr.b notifplaying
  143.  move.b 1(a0),IDNUM
  144.  st backbeat
  145.  jsr MakeSomeNoise
  146.  movem.l (a7)+,d0-d7/a0-a6
  147.  
  148. .noscream
  149.  
  150.  move.l PLR1_Roompt,ToRoom
  151.  move.l objroom,FromRoom
  152.  move.w newx,oldx
  153.  move.w newz,oldz
  154.  move.w PLR1_xoff,newx
  155.  move.w PLR1_zoff,newz
  156.  jsr CanItBeSeen
  157.  
  158.  tst.b CanSee
  159.  beq .carryonprowling
  160.  
  161.  move.b #1,17(a0)
  162.  
  163. .carryonprowling:
  164.  
  165. .thisonedead:
  166.  rts
  167.  
  168. .Attack_Player:
  169.  
  170.  move.l ZoneAdds,a5
  171.  move.l (a5,d2.w*4),d0
  172.  add.l #LEVELDATA,d0
  173.  move.l d0,objroom
  174.  move.w PLR1_xoff,newx
  175.  move.w PLR1_zoff,newz
  176.  move.w (a0),d1
  177.  move.l #ObjRotated,a6
  178.  move.l ObjectPoints,a1
  179.  lea (a1,d1.w*8),a1
  180.  lea (a6,d1.w*8),a6
  181.  move.w (a1),oldx
  182.  move.w 4(a1),oldz
  183.  move.w maxspd(a0),d2
  184.  muls.w TempFrames,d2
  185.  move.w d2,speed
  186.  move.w #80,Range
  187.  move.w 4(a0),d0
  188.  ext.l d0
  189.  asl.l #7,d0
  190.  move.l d0,newy
  191.  
  192.  movem.l d0/a0/a1/a3/a4/d7,-(a7)
  193.  clr.b canshove
  194.  clr.b GotThere
  195.  jsr HeadTowards
  196.  move.w #%1000000000,wallflags
  197.  Jsr MoveObject
  198.  movem.l (a7)+,d0/a0/a1/a3/a4/d7
  199.  
  200.  move.l objroom,a2
  201.  move.w (a2),12(a0)
  202.  move.w 12(a2),CurrCPt(a0)
  203.  
  204.  move.w newx,(a1)
  205.  move.w newz,4(a1)
  206.  move.w 10(a2),2(a0)
  207.  move.l 2(a2),d0
  208.  asr.l #7,d0
  209.  sub.w #70,d0
  210.  move.w d0,4(a0)
  211.  
  212.  move.b damagetaken(a0),d2
  213.  beq .noscream2
  214.  
  215.  sub.b d2,numlives(a0)
  216.  bgt.s .notdeadyet2
  217.  
  218.  movem.l d0-d7/a0-a6,-(a7)
  219.  move.l (a6),Noisex
  220.  move.w #200,Noisevol
  221.  move.w screamsound,Samplenum
  222.  move.b #1,chanpick
  223.  clr.b notifplaying
  224.  st backbeat
  225.  move.b 1(a0),IDNUM
  226.  jsr MakeSomeNoise
  227.  movem.l (a7)+,d0-d7/a0-a6
  228.  move.l deadframe,8(a0)
  229.  rts 
  230.  
  231. .notdeadyet2:
  232.  clr.b damagetaken(a0)
  233.  
  234.  movem.l d0-d7/a0-a6,-(a7)
  235.  move.l (a6),Noisex
  236.  move.w #200,Noisevol
  237.  move.w #8,Samplenum
  238.  move.b #1,chanpick
  239.  clr.b notifplaying
  240.  st backbeat
  241.  move.b 1(a0),IDNUM
  242.  jsr MakeSomeNoise
  243.  movem.l (a7)+,d0-d7/a0-a6
  244.  
  245.  bra .cantshoot
  246.  
  247. .noscream2:
  248.  
  249.  tst.w SecTimer(a0)
  250.  blt.s .canshoot
  251.  move.w TempFrames,d0
  252.  sub.w d0,SecTimer(a0)
  253.  bra .cantshoot
  254. .canshoot:
  255.  move.l NastyShotData,a5
  256.  move.w #19,d1
  257. .findonefree
  258.  move.w 12(a5),d0
  259.  blt.s .foundonefree
  260.  adda.w #64,a5
  261.  dbra d1,.findonefree
  262.  
  263.  bra .cantshoot
  264.  
  265. .foundonefree:
  266.  
  267.  move.l (a6),Noisex
  268.  move.w #200,Noisevol
  269.  move.w #9,Samplenum
  270.  move.b #1,chanpick
  271.  clr.b notifplaying
  272.  move.b #1,shotsize(a5)
  273.  move.b #10,shotpower(a5)
  274.  movem.l a5/a1/a0,-(a7)
  275.  move.b 1(a0),IDNUM
  276.  jsr MakeSomeNoise
  277.  movem.l (a7)+,a5/a1/a0
  278.  
  279.  move.l ObjectPoints,a2
  280.  move.w (a5),d1
  281.  lea (a2,d1.w*8),a2
  282.  move.w (a1),oldx
  283.  move.w 4(a1),oldz
  284.  move.w PLR1_xoff,newx
  285.  move.w PLR1_zoff,newz
  286.  move.w #16,speed
  287.  move.w #0,Range
  288.  movem.l a5/a0,-(a7)
  289.  jsr HeadTowards
  290.  movem.l (a7)+,a5/a0
  291.  move.w newx,d0
  292.  move.w d0,(a2)
  293.  sub.w oldx,d0
  294.  move.w d0,shotxvel(a5)
  295.  move.w newz,d0
  296.  move.w d0,4(a2)
  297.  sub.w oldz,d0
  298.  move.w d0,shotzvel(a5)
  299.  
  300.  move.l #%00100000,EnemyFlags(a5)
  301.  move.w 12(a0),12(a5)
  302.  move.w 4(a0),d0
  303.  add.w #6,d0
  304.  move.w d0,4(a5)
  305.  ext.l d0
  306.  asl.l #7,d0
  307.  move.l d0,accypos(a5)
  308.  move.l PLR1_yoff,d1
  309.  sub.l d0,d1
  310.  move.w distaway,d0
  311.  asr.w #4,d0
  312.  bgt.s .okokokok
  313.  moveq #1,d0
  314. .okokokok
  315.  divs d0,d1
  316.  move.w d1,shotyvel(a5)
  317.  jsr GetRand
  318.  and.w #7,d0
  319.  add.w #50,d0
  320.  move.w d0,SecTimer(a0)
  321.  
  322. .cantshoot:
  323.  
  324.  tst.b GotThere
  325.  beq.s .noteatyou
  326.  
  327.  move.b #1,chanpick
  328.  move.w (a6),Noisex
  329.  move.w 2(a6),Noisez
  330.  move.w #50,Noisevol
  331.  move.w #2,Samplenum
  332.  st notifplaying
  333.  move.l a0,-(a7)
  334.  move.b 1(a0),IDNUM
  335.  jsr MakeSomeNoise
  336.  move.l (a7)+,a0
  337.  
  338.  move.l #Cheese,FacesPtr
  339.  move.w #3,Cheese
  340.  move.w #-1,FacesCounter
  341.  move.w TempFrames,d0
  342.  sub.w d0,Energy
  343.  bra .carryonattack
  344. .noteatyou:
  345.  
  346.  move.l PLR1_Roompt,ToRoom
  347.  move.l objroom,FromRoom
  348.  move.w newx,oldx
  349.  move.w newz,oldz
  350.  move.w PLR1_xoff,newx
  351.  move.w PLR1_zoff,newz
  352.  jsr CanItBeSeen
  353.  
  354.  tst.b CanSee
  355.  bne .carryonattack
  356.  
  357.  move.b #0,17(a0)
  358.  
  359. .carryonattack:
  360.  
  361.  rts
  362.  
  363.